
//
//  GetVinViewController.m
//  NewProject
//
//  Created by 学鸿 张 on 13-11-29.
//  Copyright (c) 2013年 Steven. All rights reserved.
//

#import "GetVinViewController.h"

@interface GetVinViewController ()

@end

@implementation GetVinViewController

//- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
//{
//    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
//    if (self) {
//        // Custom initialization
//    }
//    return self;
//}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self setNavTitle:@"扫描"];
    [self setNavBackButton:nil];
    [self setNavRightButton:@"取消"];
    
    self.view.backgroundColor = [UIColor darkGrayColor];
    UIView *bgview = [[UIView alloc] initWithFrame:self.view.frame];
    bgview.backgroundColor =[UIColor blackColor];
    bgview.alpha = 0.5;
    [self.view addSubview:bgview];
    
//	UIButton * scanButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//    [scanButton setTitle:@"取消" forState:UIControlStateNormal];
//    scanButton.frame = CGRectMake(100, 420, 120, 40);
//    [scanButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
//    [self.view addSubview:scanButton];
    
//    UILabel * labIntroudction= [[UILabel alloc] initWithFrame:CGRectMake(15, 40, 290, 50)];
//    labIntroudction.backgroundColor = [UIColor clearColor];
//    labIntroudction.numberOfLines=2;
//    labIntroudction.textColor=[UIColor whiteColor];
//    labIntroudction.text=@"将二维码图像置于矩形方框内，离手机摄像头10CM左右，系统会自动识别。";
//    [self.view addSubview:labIntroudction];
    
    
    UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(212, 84, 600, 600)];
    imageView.image = [UIImage imageNamed:@"pick_bg"];
    [self.view addSubview:imageView];
    
    upOrdown = NO;
    num =0;
    _line = [[UIImageView alloc] initWithFrame:CGRectMake(212+80, 84+300, 440, 4)];
    _line.image = [UIImage imageNamed:@"line.png"];
    [self.view addSubview:_line];
    
//    timer = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(animation1) userInfo:nil repeats:YES];
    

}

#pragma mark - 旋转
- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    UIInterfaceOrientation v  =  [[UIApplication sharedApplication] statusBarOrientation] ;
    if (v == UIInterfaceOrientationLandscapeRight) {
        _preview.orientation = AVCaptureVideoOrientationLandscapeRight;
        
    }
    else if(v == UIInterfaceOrientationLandscapeLeft)
    {
        _preview.orientation = AVCaptureVideoOrientationLandscapeLeft;
    }
//    else if (v == UIInterfaceOrientationPortrait)
//    {
//        _preview.orientation = AVCaptureVideoOrientationPortrait;
//    }
//    else if (v == UIInterfaceOrientationPortraitUpsideDown)
//    {
//        _preview.orientation = AVCaptureVideoOrientationPortraitUpsideDown;
//    }
    
    return _preview.orientation;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
        return YES;
    }
    return NO;
}


- (void)navRightButtonActionAtTag:(NSUInteger)tag
{
    [super backAction:nil];
}

-(void)animation1
{
    if (upOrdown == NO) {
        num ++;
        _line.frame = CGRectMake(50, 110+2*num, 220, 2);
        if (2*num == 280) {
            upOrdown = YES;
        }
    }
    else {
        num --;
        _line.frame = CGRectMake(50, 110+2*num, 220, 2);
        if (num == 0) {
            upOrdown = NO;
        }
    }

}
-(void)backAction
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self setupCamera];
}

- (void)setupCamera
{
    // Device
    _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    // Input
    _input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];
    
    // Output
    _output = [[AVCaptureMetadataOutput alloc]init];
    [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    
    // Session
    _session = [[AVCaptureSession alloc]init];
    [_session setSessionPreset:AVCaptureSessionPresetHigh];
    if ([_session canAddInput:self.input])
    {
        [_session addInput:self.input];
    }
    
    if ([_session canAddOutput:self.output])
    {
        [_session addOutput:self.output];
    }
    
    // 条码类型 AVMetadataObjectTypeQRCode
    _output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeCode128Code];
    
//    CALayer *previewLayer=[[CALayer alloc] init];
//    previewLayer.setAffineTransform(CGAffineTransformMakeRotation(CGFloat(M_PI / 2.0)));
    
    // Preview
    _preview =[AVCaptureVideoPreviewLayer layerWithSession:self.session];
    _preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
    _preview.frame =CGRectMake(212, 84, 600, 600);
    
    UIInterfaceOrientation v  =  [[UIApplication sharedApplication] statusBarOrientation] ;
    if (v == UIInterfaceOrientationLandscapeRight) {
        _preview.orientation = AVCaptureVideoOrientationLandscapeRight;
        
    }
    else if(v == UIInterfaceOrientationLandscapeLeft)
    {
         _preview.orientation = AVCaptureVideoOrientationLandscapeLeft;
    }
//    else if (v == UIInterfaceOrientationPortrait)
//    {
//        _preview.orientation = AVCaptureVideoOrientationPortrait;
//    }
//    else if (v == UIInterfaceOrientationPortraitUpsideDown)
//    {
//        _preview.orientation = AVCaptureVideoOrientationPortraitUpsideDown;
//    }

    
//    _preview.position = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
//    _preview.affineTransform=CGAffineTransformMakeRotation(M_PI_2);
//    (CGAffineTransformMakeRotation(CGFloat(M_PI_2)));
    
    [self.view.layer insertSublayer:self.preview atIndex:0];
    
    // Start
    [_session startRunning];
}
#pragma mark AVCaptureMetadataOutputObjectsDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
   
    NSString *stringValue;
    
    if ([metadataObjects count] >0)
    {
        AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex:0];
        stringValue = metadataObject.stringValue;
    }
    
    if ([stringValue containsString:@"http"]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:stringValue]];
    }
    
    if ([self.doSth isEqualToString:@"getVIN"]) {
        if (stringValue.length==17) {
            
            if (self.getVinStr) {
                self.getVinStr(stringValue);
                [_session stopRunning];
                [self dismissViewControllerAnimated:YES completion:nil];
                
            }
        }
    }
    else
    {
        if (stringValue.length==20) {
            if (self.getVinStr) {
                self.getVinStr(stringValue);
                [_session stopRunning];
                [self dismissViewControllerAnimated:YES completion:nil];
                
            }
        }

    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
